#include <stdio.h>
#include <time.h>
#include <string.h>

int getLineNum(FILE*fp)//断点续传
{
    char s[10];
    int line=0;
    while (fgets(s, sizeof(s), fp) != NULL)
    {
        if (strlen(s) == sizeof(s) - 1)
        {
            if (s[sizeof(s) - 2] != '\n')
            {
                continue;
            }
        }
        line++;
    }
    return line;
}

int main(int argc, const char* argv[])
{
    FILE* fp;
    time_t time_new, time_old;//统计秒数
    struct tm* tm;//存放localtime函数返回的时间结构体
    char s[50];//存放每次读到的时间字符串
    int line = 0;//存放行号

    //打开文件
    if(NULL == (fp = fopen("time.txt", "a+")))//想要获取到行号，必须使用a+
    {
        perror("fopen error");
        return -1;
    }
    line = getLineNum(fp);
    printf("%d\n", line);
    while(1)
    {
        time(&time_new);//以传参的方式获取当前秒数
        tm = localtime(&time_new);//获取当前时间格式化结构体
        if(NULL == tm)
        {
            perror("get time error");
            return -1;
        }
        if(time_new != time_old)//轮循获取时间更加精准
        {
            time_old = time_new;
            sprintf(s,"%3d.%4d-%02d-%02d %02d:%02d:%02d\n",
                    ++line,  tm->tm_year + 1900,tm->tm_mon + 1, 
                    tm->tm_mday, tm->tm_hour, tm->tm_min, 
                    tm->tm_sec);
            fputs(s, fp);
            fflush(fp);//缓冲区刷新
        }
    }
    fclose(fp);

    return 0;
}